Traditional client-server communication is based on “pull” messaging. Under this paradigm, in order to access information at a server device, a client device transmits a request for the information to the server device. In response to this request, the server device may transmit a copy of the requested information. Pull messaging may be effective for some applications, such as file downloads and web browsing. However, it is typically inefficient for applications in which information for the client device arrives asynchronously, such as email and instant messaging applications.
An alternative approach, called “push” messaging, has also been proposed. Using push messaging, a client device registers with a server device, and the server device transmits information to the client device as that information arrives at the server device. Nonetheless, despite exhibiting some advantages over pull messaging, push messaging can also be inefficient in many practical scenarios.